#案例：字符串类型中常用的方法！

# 函数原型：String obj.capitalize();
# 函数功能：把字符串对象obj的中的首字符变大写，其他字符都变小写。
a="abcSDSd"
ret=a.capitalize()
print(ret)


# 函数原型：int obj.count(String s);
# 函数功能：统计子字符串s在母字符串obj中出现的次数！
# 形参s：要统计的子字符串
a="abcd1234dsad1234dasd1234dsa"
b="1234"
ret=a.count(b)#ret=3
print(ret)

# 函数原型：boolean obj.endswith(String s);
# 函数功能：判断字符串obj是否是否字符串s结尾。如果是，返回True；如果否，返回False！
# 形参s：判断是否以此字符串结尾！
a="abcd1234dsad"
b="sad"
ret=a.endswith(b)
print(ret)


#函数原型：boolean obj.startwith(String s);
a="abcd1234"
ret=a.startswith("abcd")
print(ret)


# 函数原型：int obj.find(String s,[int start_index,int end_index]);
# 函数功能：获取子字符串s在母字符串obj中首次出现的正向下标！如果找不到，返回-1！
# 形参s：要查找的子字符串！
# 形参start_index和end_index:指定了查找范围！
# 返回值：返回子字符串的下标！
a="abcd1234dsad1234ds1234dsa"
# ret=a.find("1234")
ret=a.find("1234",8,-1)
print(ret) #4



# 函数原型：int obj.rfind(String s,[int start_index,int end_index]);
a="abcd1234dsad1234ds1234dsa"
ret=a.rfind("1234")
print(ret)


# 函数原型：String obj.format(Object *args);
# 注意：字符串obj是一个带有占位符“{}”的格式化字符串！
# 函数功能：把不定长对象args按照格式化字符串obj指定的格式，格式化为一个字符串！
# 形参args：是个不定长参数。要格式的数据的列表！
#
# 注意：不管是int/float/string/bool类型的数据，占位符都是“{}”。
a=10
b=12.34
c="我爱中国"
#需要的效果："A=10,B=12.34,C=我爱中国"
ret="A={},B={},C={}".format(a,b,c)
print(ret)

#
# 函数原型：String obj.replace(String old,String new[,int max_count]);
# 函数功能：把字符串obj中的old字符串替换为new字符串！如果没有定了max_count参数，那么全部替换；如果给定了max_count参数，那么最大替换次数=max__count。
# 形参old：obj字符串中的某子字符串。即要被替换的字符串！
# 形参new：一个新字符串。即替换老字符串的新字符串！
# 形参max_count:替换的最大次数！
a="abcd1234dsad1234dsadsa1234dsads"
# ret=a.replace("1234","我爱中国")
ret=a.replace("1234","我爱中国",2)
print(ret)

# 函数原型：List obj.split([fengefu="",count=-1]);
# 函数功能：用fengefu字符串来把字符串obj分割为一个列表！
# 形参fengefu：指定用什么字符串进行分割；即分隔符字符串！默认值是空格、\n、\t!
# 形参count：指定分割次数（即砍几刀，即砍count刀）。如果没有指定count的值，那么就是全部分割；如果指定了count，那么最终形成的列表的元素的个数=count+1.
a="K001##张三##13760453683"
# ret=a.split("##") #ret=['K001', '张三', '13760453683']
ret=a.split("##",1)
print(ret)

a="K001 张三\t13760453683"
ret=a.split()
print(ret)

# 函数原型：List obj.rsplit([fengefu="",count=-1]);
a="K001##张三##13760453683"
ret=a.rsplit("##",1)
print(ret)


# 函数原型：String obj.join(Object sequence);
# 函数功能：将序列sequence(字符串、列表、元组)中的每个元素以指定的字符串连接符obj来连接生成一个新的字符串。
# 形参sequence：一个序列。即可以是一个字符串、一个列表、一个元组！
# ret=",".join("abcd")#ret="a,b,c,d"

b=["abc","def","1234"]
ret="##".join(b)#ret="abc##def##1234"
print(ret)


# 函数原型：String obj.strip([String s]);
# 函数功能：把字符串obj中首尾中的指定字符列表移除！如果s没有指定，那么就移除首尾中所有空格或换行符(\n)、tab键(\t)；如果指定了s，那么就移除s中指定的所有字符！
# 注意：该方法只能删除开头或是结尾的字符，不能删除中间部分的字符。
# 形参s：移除字符串头尾指定的字符序列。比如obj.strip("abc")，那么表示obj字符串首尾中的字符"a"或字符"b"或字符"c"都移除。
a="abcdcd1234abcdbdasedbcacab"
b="bcda"
ret=a.strip(b)#"1234abcdbdase"
print(ret)

a=" abcd dsadsa   "
ret=a.strip()
print(ret)


# 函数原型：String obj.lstrip([String s]);
a="abcdcd1234abcdbdasedbcacab"
b="bcda"
ret=a.lstrip(b)#"1234abcdbdase"
print(ret)


# 函数原型：String obj.rstrip([String s]);
a="abcdcd1234abcdbdasedbcacab"
b="bcda"
ret=a.rstrip(b)#"1234abcdbdase"
print(ret)

#思考：如何知道字符串类型中的所有函数
print(dir("avcd"))
